package controlador;

import dominio.juego.IJuegoRepository;
import dominio.juego.Juego;
import dominio.laberinto.ILaberintoRepository;
import dominio.laberinto.Laberinto;

public class JuegoController extends Thread implements Runnable {

	public static final long INTERVALO_SIMULACION = 1000;

	private ILaberintoRepository laberintoRepository;
	private IJuegoRepository juegoRepository;

	private Laberinto laberinto;
	private Juego juego;

	public void setLaberintoRepository(ILaberintoRepository laberintoRepository) {
		this.laberintoRepository = laberintoRepository;
	}

	public void setJuegoRepository(IJuegoRepository juegoRepository) {
		this.juegoRepository = juegoRepository;
	}

	public void setLaberinto(Laberinto laberinto) {
		this.laberinto = laberinto;
	}

	public void setJuego(Juego juego) {
		this.juego = juego;
	}

	public void comenzar() {
		this.start();
	}

	@Override
	public void run() {
		while (!this.juego.isFinJuego()) {
			this.juego.correr();
			this.juegoRepository.guardar(juego);
			this.laberintoRepository.guardar(laberinto);
			try {
				Thread.sleep(INTERVALO_SIMULACION);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

}
